class: inverse,left, middle background-image: url(data:image/png;base64,#background.png) background-size: cover <img src="data:image/png;base64,#LOGO_DIPLOMADO.png" width="500px"/> ##Módulo 3: EstadÃstica espacial y geo-estadÃstica ###Interpolación por kriging Roberto O. Chávez<br> <a href="http://github.com/xxxx"> Github: robertogrspucv</a><br> <a href="mailto:roberto.chavez@pucv.cl"> roberto.chavez@pucv.cl</a><br> .large[<b><a href="https://www.pucv.cl/uuaa/site/edic/base/port/labgrs.html">LabGRS</a> | 24 Oct 2022</b>] <br> --- class: center,middle background-image: url(data:image/png;base64,#labgrs_logo.png) background-size: 35% --- ## Puntos y el concepto de interpolación <center><img src="data:image/png;base64,#img01_napa_tapada.png" height="400px" /></center> .footnote[¿Cuál es la profundidad de la napa en el pozo del medio?] --- ## Puntos y el concepto de interpolación <center><img src="data:image/png;base64,#img02_napa_sin_tapa.png" height="400px" /></center> .footnote[¿Cuál es la profundidad de la napa en el pozo del medio?] --- ## Puntos y el concepto de interpolación <center><img src="data:image/png;base64,#img03_napa_abc.png" height="300px" /></center> - La mayor parte de las veces las variables no se comportan en forma lineal en el espacio geográfico - En este caso, se requiere describir cómo varÃa la profundidad en el espacio geográfico! --- ## ¿Se puede interpolar siempre? <div style= "float:left;position: relative; right: 30px; top: -7px;"> <img src="data:image/png;base64,#img04_realidad_1.png" width="500px" style="display: block; margin: auto auto auto 0;" /> </div> **Realidad 1** (con auto-correlación espacial) --- ## ¿Se puede interpolar siempre? <div style= "float:left;position: relative; right: 30px; top: -7px;"> <img src="data:image/png;base64,#img05_realidad_aleatoria.png" width="500px" style="display: block; margin: auto auto auto 0;" /> </div> **Realidad 2** (distribución espacial aleatoria) --- ## Ejemplo: interpolación de temperatura superficial Llamamos librerÃas y leemos los datos ```r library(terra) library(gstat) tb<-read.csv("temp_promedio_cauquenes.csv",sep = ",") puntos <- vect(tb, c("X", "Y"), crs = "32719") poli <- vect("Provincia_Cauquenes.shp") ``` --- ## Ejemplo: interpolación de temperatura superficial Visualización del área de estudio y puntos ```r plot(puntos, "t_mean1", main="T. superficie (°C)", type="continuous",col = rev(heat.colors(256)), legend=TRUE, cex=1.5) lines(poli,border="dark gray") ``` <img src="data:image/png;base64,#clase_krige_files/figure-html/ex2-1.png" width="100%" /> --- ## Variograma Es una curva matemática que muestra como cambia la semivarianza entre dos localizaciones a distintas distancias <center><img src="data:image/png;base64,#img06_variograma.png" height="400px" /></center> --- ## Semivarianza Se define como la mitad del valor esperado de la diferencia al cuadrado entre los valores de una variable en dos ubicaciones geográficas distintas. <center><img src="data:image/png;base64,#img07_formula.png" height="300px" /></center> --- ## Estimación de semivarianza con puntos disponibles <center><img src="data:image/png;base64,#formula2_sumatoria.png" height="150px" /></center> .footnote[N > 2 si hay más de 2 puntos a una misma distancia. Semivarianza porque considera la localización (i,j) y (j,i)] --- ## Variogramas de distintas realidades **Realidad 1**: con patrones de agrupamiento de gran tamaño <center><img src="data:image/png;base64,#img08_realidad1.png" height="400px" /></center> --- ## Variogramas de distintas realidades **Realidad 2**: con patrones de agrupamiento de pequeño tamaño <center><img src="data:image/png;base64,#img09_realidad2.png" height="400px" /></center> --- ## Variogramas de distintas realidades **Realidad 3**: sin patrones de agrupamiento (completa aleatoriedad) <center><img src="data:image/png;base64,#img10_realidad3.png" height="400px" /></center> --- ## Variogramas de distintas realidades **Realidad 4**: con patrones de agrupamiento ruidoso (error de muestreo) <center><img src="data:image/png;base64,#img11_realidad4.png" height="400px" /></center> --- ## Parámetros del variograma <div style= "float:left;position: relative; right: 30px; top: -7px;"> <img src="data:image/png;base64,#img12_var_par.png" width="600px" style="display: block; margin: auto auto auto 0;" /> </div> - **Nugget**: indica que hay variación a distancias cortas (habitualmente asociadas a error de medición). - **Sill**: semivarianza máxima de la variable de interés - **Range**: distancia hasta la cual existe correlación espacial (semivarianza es máxima y no sigue aumentando) --- ## Construcción del variograma <div style= "float:left;position: relative; right: 30px; top: -7px;"> <img src="data:image/png;base64,#img12_var_par.png" width="600px" style="display: block; margin: auto auto auto 0;" /> </div> - Si tenemos n observaciones entonces tendremos 1/2 x n x (n-1) pares de observaciones - Por ejemplo, n = 150, tendremos 11.175 pares - Cada par { z(xi), z(xj) } entrega información de semivarianza de la distancia | xi-xj | calculada usando la fórmula 1/2 x [z(Xi) x z(Xj)]2 - Esto nos dará una nube de 1/2 x n x (n-1) valores de semivarianza --- ## Construcción de variograma en R ```r # Cálculo de semivarianza para todos los pares gs <- gstat(formula=t_mean1~1, locations=~X+Y, data=tb) cloud_v<-variogram(gs,cloud=T) plot(cloud_v) ``` <img src="data:image/png;base64,#clase_krige_files/figure-html/ex3-1.png" width="45%" height="45%" style="display: block; margin: auto;" /> --- ## Construcción de variograma en R ```r # Variograma experimental v.exp <- variogram(gs, boundaries = c(1000,3000,7000,15000,20000,30000,60000,100000)) plot(v.exp, plot.numbers = TRUE) ``` <img src="data:image/png;base64,#clase_krige_files/figure-html/ex4-1.png" width="50%" height="50%" style="display: block; margin: auto;" /> --- ## Construcción de variograma en R ```r # Modelos disponibles para variograma empÃrico show.vgms() ``` <img src="data:image/png;base64,#clase_krige_files/figure-html/ex5-1.png" width="65%" height="65%" style="display: block; margin: auto;" /> --- ## Construcción de variograma en R ```r # Ajuste del variograma empÃrico v.par <- vgm(nugget=10,psill=70,range=60000, model="Exp") v.emp <- fit.variogram(v.exp, v.par, fit.method = 6) v.emp ``` ``` ## model psill range ## 1 Nug 11.71436 0.00 ## 2 Exp 71.57531 22642.58 ``` --- ## Construcción de variograma en R ```r # Graficar variograma empÃrico plot(v.emp,80000) ``` <img src="data:image/png;base64,#clase_krige_files/figure-html/ex7-1.png" width="50%" height="50%" style="display: block; margin: auto;" /> --- ## Interpolación por kriging ordinario en R ```r # Construcción de grilla vacÃa para interpolación ras_vacio<-rast(extent=ext(poli), resolution=500, crs= "epsg:32719") ras_poli<-rasterize(poli,ras_vacio) plot(ras_poli, legend=F) ``` <img src="data:image/png;base64,#clase_krige_files/figure-html/ex8-1.png" width="50%" height="50%" style="display: block; margin: auto;" /> --- ## Interpolación por kriging ordinario en R ```r # Predicción KO <- gstat(formula=t_mean1~1, locations=~X+Y, data=tb, model=v.emp) pred <- interpolate(ras_poli, KO, xyNames=c("X", "Y")) ``` ``` ## [using ordinary kriging] ## [using ordinary kriging] ``` --- ## Interpolación por kriging ordinario en R ```r # Aplicar máscara y graficar pred.msk <- mask(pred, ras_poli) names(pred.msk) <- c('prediction', 'variance') plot(pred.msk) ``` <img src="data:image/png;base64,#clase_krige_files/figure-html/ex10-1.png" width="90%" height="90%" style="display: block; margin: auto;" /> --- ## Comparación entre puntos e interpolación <center><img src="data:image/png;base64,#img13_comp.png" height="400px" /></center> --- ## ¿Tiene sentido la interpolación? <center><img src="data:image/png;base64,#img14_comp_GE.png" height="400px" /></center> --- class: inverse middle 